import { ref, computed } from "vue";
import { defineStore } from "pinia";
import { removeToken } from "@/assets/utils/token";
import { showMsg } from "@/assets/utils/tools";
import { createDiscreteApi } from "naive-ui";
import { LOG_OUT_SAFELY, GET_USER_INFO } from "../service/apis/apis";

const { message } = createDiscreteApi(["message"]);
interface IState {
  // 用户信息
  userInfo: any;
  // 权限列表
  // purview: string[];
}
/**
 * 用户状态管理
 */
// export const useUserStore = defineStore("user",() => {
//     const userInfo = ref<IState>();

//     const userInfos = computed(() =>{
//       // localStorage.getItem('user')
//       const lsUser:any =  localStorage.getItem('user')
//       userInfo.value = JSON.parse(lsUser)
//       console.log(userInfo.value);
//       return userInfo.value
//     })
//     /**
//      * 获取用户信息
//      */
//     function getUserInfo() {
//       GET_USER_INFO({ i: "随便写的" })
//         .then((res: any) => {
//           console.log("用户信息");

//           userInfo.value = res[0].data || {};
//           // this.purview = Array.isArray(res[1].data) && res[1].data || [];
//           // resolve(true);
//         })
//         .catch(() => {
//           // reject();
//         });
//     }
//     /**
//      * 安全退出
//      */
//     function logOutSafely() {
//       // debugger;
//       const destroyData = () => {
//         removeToken();
//         userInfo.value = undefined;
//         //   this.purview = [];
//       };
//       LOG_OUT_SAFELY()
//         .then(() => {
//           destroyData();
//           // resolve(true);
//           window.location.href = "/login";
//         })
//         .catch(() => {
//           destroyData();
//           // resolve(true);
//         });
//     }

//     return { userInfo,userInfos, getUserInfo, logOutSafely };
//   },
//   { persist: true }
// );

/**
 * 用户状态管理
 */
export const useUserStore = defineStore("user", {
  state: (): IState => ({
    userInfo: undefined,
    // purview: ["*:*:*"]
  }),
  getters: {
    // 获得菜单列表
    //   menuList(): RouteRecordRaw[] {
    //     const routes: RouteRecordRaw[] = router.getRoutes().filter(item => item.meta.isMenu && hasPurview([item.meta.mark as string]));
    //     return routeTree(routes, "");
    //   }
  },
  actions: {
    /**
     * 获得用户信息
     */
    getUserInfo() {
      return new Promise((resolve, reject) => {
        Promise.all([GET_USER_INFO({i:'随便写的'})])
          .then((res) => {
            console.log("用户信息");

            this.userInfo = res[0].data || {};
            // this.purview = Array.isArray(res[1].data) && res[1].data || [];
            resolve(true);
          })
          .catch(() => {
            reject();
          });
      });
    },
    /**
     * 安全退出
     */
    logOutSafely() {
      /**
       * 销毁数据
       */
      // debugger;
      const destroyData = () => {
        removeToken();
        this.userInfo = undefined;
        //   this.purview = [];
      };

      LOG_OUT_SAFELY()
        .then(() => {
          destroyData();
          // resolve(true);
          window.location.href = "/login";
        })
        .catch(() => {
          destroyData();
          // resolve(true);
        });
    },
  },
  persist: true,
});
